﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Stl.Controls
{
    /// <summary>
    /// Interface des undo.
    /// </summary>
    public interface IUndo
    {
        void Undo();
        string GetCommand();
    }

    /// <summary>
    /// Interface des redo.
    /// </summary>
    public interface IRedo
    {
        void Redo();
        string GetCommand();
    }

    /// <summary>
    /// La classe abstraite pour représenter une action qui peut être undo ou redo.
    /// </summary>
    public abstract class Command : IUndo, IRedo
    {
        /// <summary>
        /// Undo une action
        /// </summary>
        public abstract void Undo();

        /// <summary>
        /// Redo une action
        /// </summary>
        public abstract void Redo();

        /// <summary>
        /// Renvoie l'action en texte
        /// </summary>
        /// <returns>Action en texte</returns>
        public abstract string GetCommand();
    }
}
